package com.example.chamberlainserver.Service;

import com.example.chamberlainserver.Entry.Role;
import com.example.chamberlainserver.Entry.UserRole;

import java.util.List;

/**
 * 用户角色关联服务接口
 */
public interface UserRoleService {
    /**
     * 根据用户ID获取用户角色关联列表
     */
    List<UserRole> getUserRolesByUserId(Integer userId);
    
    /**
     * 根据角色ID获取用户角色关联列表
     */
    List<UserRole> getUserRolesByRoleId(Integer roleId);
    
    /**
     * 根据用户ID获取用户的角色列表
     */
    List<Role> getRolesByUserId(Integer userId);
    
    /**
     * 添加用户角色关联
     */
    boolean addUserRole(UserRole userRole);
    
    /**
     * 批量添加用户角色关联
     */
    boolean batchAddUserRole(List<UserRole> userRoles);
    
    /**
     * 删除用户角色关联
     */
    boolean deleteUserRole(Integer userId, Integer roleId);
    
    /**
     * 根据用户ID删除所有用户角色关联
     */
    boolean deleteUserRolesByUserId(Integer userId);
    
    /**
     * 根据角色ID删除所有用户角色关联
     */
    boolean deleteUserRolesByRoleId(Integer roleId);
    
    /**
     * 检查用户是否拥有指定角色
     */
    boolean hasRole(Integer userId, Integer roleId);
    
    /**
     * 检查用户是否拥有指定角色代码
     */
    boolean hasRoleByCode(Integer userId, String roleCode);
    
    /**
     * 为用户分配角色
     */
    boolean assignRolesToUser(Integer userId, List<Integer> roleIds);
}